/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package dao.impl;

import dao.ClienteDao;
import dao.Conexao;
import dao.LojaDaoException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import model.Cliente;


/**
 *
 * @author Jorley
 */
public class ClienteDaoImpl implements ClienteDao{
    
    private Connection conn;

    public ClienteDaoImpl() throws LojaDaoException {
        try {
            conn = Conexao.getConnection();
        } catch (LojaDaoException e){
            throw new LojaDaoException("Erro: ao instanciar o ClienteDaoImpl \n" + e.getMessage());
        }
    }


    @Override
    public void atualizar(Cliente cliente) throws LojaDaoException {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    @Override
    public void excluir(Cliente cliente) throws LojaDaoException {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    
//    @Override
//    public void atualizar(Cliente cliente) throws LivrariaDAOException {
//        PreparedStatement ps = null;
//        Connection conn1 = null;
//        if(cliente == null) {
//            throw new LivrariaDAOException("Nenhum cliente informado.");
//        }
//        try {
//            String sql = "UPDATE cliente SET nome=?, telefone_fixo=?, telefone_celular=?, " +
//                          "sexo=?, data_nascimento=?, usuario=?, senha=? WHERE cpf=?";
//            conn1 = conn;
//            ps = conn1.prepareStatement(sql);
//            ps.setString(1, cliente.getNome());
//            ps.setString(2, cliente.getTelefoneFixo());
//            ps.setString(3, cliente.getTelefoneCelular());
//            ps.setString(4, cliente.getSexo());
//            ps.setString(5, cliente.getDataNascimento());
//            ps.setString(6, cliente.getUsuario());
//            ps.setString(7, cliente.getSenha());
//            ps.setString(8, cliente.getCpf());          
//            ps.executeUpdate();
//        } catch(SQLException e){
//            throw new LivrariaDAOException("Erro ao atualizar o cliente. \n" + e);
//        } finally{
//            Conexao.closeConnection(conn1, ps);
//        }
//    }
    
//    @Override
//    public void excluir(Cliente cliente) throws LivrariaDAOException {
//        PreparedStatement ps = null;
//        Connection conn1 = null;
//        if(cliente == null) {
//            throw new LivrariaDAOException("Nenhum cliente informado.");
//        }
//        try {
//            String sql = "DELETE FROM cliente WHERE cpf=?";
//            conn1 = conn;
//            ps = conn1.prepareStatement(sql);
//            ps.setString(1, cliente.getCpf());          
//            ps.executeUpdate();
//        } catch(SQLException e){
//            throw new LivrariaDAOException("Erro ao excluir o cliente. \n" + e);
//        } finally{
//            Conexao.closeConnection(conn1, ps);
//        }
//    }

    @Override
    public void salvar(Cliente cliente) throws LojaDaoException {
        PreparedStatement ps = null;
        Connection conn1 = null;
        if(cliente == null) {
            throw new LojaDaoException("Nenhum cliente informado.");
        }
        try {
            String sql = "INSERT INTO cliente (nome, sobrenome, sexo, telefone, telefone_comercial, endereco, "
                    + "numero, bairro, cep, cidade, estado, email, senha, ativo, cpf, data_nascimento)  values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
            conn1 = conn;
            ps = conn1.prepareStatement(sql);
            ps.setString    (1, cliente.getNome());
            ps.setString    (2, cliente.getSobrenome());
            ps.setString    (3, cliente.getSexo());
            ps.setString    (4, cliente.getTelefone());
            ps.setString    (5, cliente.getTelefone_comercial());
            ps.setString    (6, cliente.getEndereco());
            ps.setInt       (7, cliente.getNumero());
            ps.setString    (8, cliente.getBairro());
            ps.setString    (9, cliente.getCep());
            ps.setString    (10, cliente.getCidade());
            ps.setString    (11, cliente.getEstado());
            ps.setString    (12, cliente.getEmail());
            ps.setString    (13, cliente.getSenha());
            ps.setBoolean   (14, cliente.getAtivo());
            ps.setInt       (15, cliente.getIdCliente());
            ps.setString    (16, cliente.getDataNascimento());
            ps.executeUpdate();
        } catch(SQLException e){
            throw new LojaDaoException("Erro ao inserir o cliente. \n" + e);
        } finally{
            Conexao.closeConnection(conn1, ps);
        }
    }
    
//    @Override
//    public Cliente procurarCliente(String cpf) throws LivrariaDAOException {
//        PreparedStatement ps = null;
//        Connection conn1 = null;
//        ResultSet rs = null;
//        Cliente cliente = new Cliente();
//        if(cpf == null || cpf.equals("") ) {
//            throw new LivrariaDAOException("Nenhum CPF informado.");
//        }
//        try {
//            String sql = "SELECT * FROM cliente WHERE cpf=?";
//            conn1 = conn;
//            ps = conn1.prepareStatement(sql);
//            ps.setString(1, cpf);
//            rs = ps.executeQuery();
//            while (rs.next()) {
//            cliente = new Cliente(rs.getString("nome"), rs.getString("telefone_fixo"),
//                    rs.getString("telefone_celular"), rs.getString("cpf"), rs.getString("sexo"), 
//                    rs.getString("data_nascimento"), rs.getString("usuario"), rs.getString("senha"));
//            }
//            return cliente;
//        } catch(SQLException e){
//            throw new LivrariaDAOException("Erro ao procurar cliente. \n" + e);
//        } finally{
//            Conexao.closeConnection(conn1, ps, rs);
//        }
//    }
//
    @Override
    public Cliente procurarCliente(String email, String senha) throws LojaDaoException {
        PreparedStatement ps = null;
        Connection conn1 = null;
        ResultSet rs = null;
        Cliente cliente = new Cliente();
        if(email == null || email.equals("") || senha == null || senha.equals("") ) {
            throw new LojaDaoException("Usuário ou senha não informado(s).");
        }
        try {
            String sql = "SELECT * FROM cliente WHERE email=? AND senha=?";
            conn1 = conn;
            ps = conn1.prepareStatement(sql);
            ps.setString(1, email);
            ps.setString(2, senha);
            rs = ps.executeQuery();
            while (rs.next()) {
            cliente = new Cliente(rs.getInt("cpf"), rs.getString("nome") , rs.getString("sobrenome") , 
                    rs.getString("sexo"), rs.getString("data_nascimento") , rs.getString("telefone") , 
                    rs.getString("telefone_comercial"), rs.getString("endereco"), rs.getInt("numero") , 
                    rs.getString("bairro") , rs.getString("cep") , rs.getString("cidade") , 
                    rs.getString("estado") , rs.getString("email") , rs.getString("senha") , rs.getBoolean("ativo") );
            }
            return cliente;
        } catch(SQLException e){
            throw new LojaDaoException("Erro ao procurar cliente. \n" + e);
        } finally{
            Conexao.closeConnection(conn1, ps, rs);
        }
    }

    @Override
    public Cliente procurarCliente(String cpf) throws LojaDaoException {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

}    
